Docker : Use Persistent Storage
2015/12/21 |
When Container is removed, data in it are also lost,
so it's necessary to use external filesystem in Container as persistent storage if you need.
|
|
[1] | For exmaple, create a Container only for using to save data as a storage server with an image busybox. |
[root@dlp ~]#
vi Dockerfile # create new FROM busybox MAINTAINER ServerWorld <admin@srv.world> VOLUME /storage CMD /bin/sh # build image [root@dlp ~]# docker build -t storage .
docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE storage latest 65c5cce81114 20 seconds ago 1.113 MB docker.io/centos latest 14dab3d40372 6 days ago 194.7 MB docker.io/busybox latest fc0db02f3072 13 days ago 1.113 MB # generate a Container with any name you like [root@dlp ~]# docker run -i -t --name storage_server storage / # exit
|
[2] | To use the Container above as a Storage Server from other Containers, add an option "--volumes-from". |
[root@dlp ~]#
[root@b9b7a2d35b51 /]# docker run -i -t --name centos_server --volumes-from storage_server centos /bin/bash df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-67164897-..... ext4 99G 266M 94G 1% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev shm tmpfs 64M 0 64M 0% /dev/shm tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 27G 3.2G 24G 13% /storage tmpfs tmpfs 2.0G 0 2.0G 0% /run/secrets[root@b9b7a2d35b51 /]# echo "persistent storage" >> /storage/testfile.txt [root@b9b7a2d35b51 /]# ll /storage total 4 -rw-r--r-- 1 root root 19 Dec 22 02:15 testfile.txt |
[3] | Make sure data are saved to run a Container of Storage Server like follows. |
[root@dlp ~]# docker start storage_server [root@dlp ~]# docker attach storage_server / # cat /storage/testfile.txt persistent storage |
[4] | For other way to save data in external filesystem, it's possible to mount a directory on Docker Host into Containers. |
# create a directory [root@www ~]# mkdir -p /var/docker/disk01 [root@www ~]# echo "persistent storage" >> /var/docker/disk01/testfile.txt
# run a Container with mounting the directory above on /mnt [root@www ~]# docker run -i -t -v /var/docker/disk01:/mnt centos /bin/bash
df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-67164897-..... ext4 99G 266M 94G 1% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev shm tmpfs 64M 0 64M 0% /dev/shm tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 27G 3.2G 24G 13% /mnt tmpfs tmpfs 2.0G 0 2.0G 0% /run/secrets[root@bc9a4d5578a6 /]# cat /mnt/testfile.txt persistent storage |